﻿using FlexFlow.Base.File;
using FlexFlow.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlexFlow.Base.Interface
{
    /// <summary>
    /// 表示物理文件管理器接口
    /// </summary>
    public interface IPhysicalFileProvider
    {
        /// <summary>
        /// 打开文件
        /// </summary>
        /// <param name="des">
        /// 文件描述
        /// </param>
        /// <param name="mode">
        /// 文件的打开模式
        /// </param>
        /// <returns>
        /// 打开的物理文件写入流
        /// </returns>
        Stream OpenFile(FileDescription des,FileOpenMode mode);
        /// <summary>
        /// 删除指定文件描述对应的物理文件
        /// </summary>
        /// <param name="des">
        /// 要删除的文件描述
        /// </param>
        /// <returns>
        /// 出错信息，如果删除文件成功，请返回空字符串，否则返回出错信息文本
        /// </returns>
        string DeleteFile(FileDescription des);
        /// <summary>
        /// 判断指定文件描述对应的物理文件是否存在
        /// </summary>
        /// <param name="des">
        /// 要判断的文件描述
        /// </param>
        /// <returns>
        /// 一个表示物理文件是否存在的值
        /// </returns>
        bool FileExists(FileDescription des);
    }
}
